Passed
Push — task/extract-localization-to-f... ( 65b263 )
by Tristan
06:39
created

localize.ts ➔ localizeField   A

Complexity

Conditions 1

Size

Total Lines 8
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 8
dl 0
loc 8
rs 10
c 0
b 0
f 0
1
import { localizedField, localizedFieldNonNull } from "../models/app";
2
3
export type Locales = "en" | "fr";
4
type TranslatableKeysNonNull<T> = {
5
  [K in keyof T]: T[K] extends localizedFieldNonNull ? K : never;
6
}[keyof T];
7
type TranslatableKeys<T> = {
8
  [K in keyof T]: T[K] extends localizedField ? K : never;
9
}[keyof T];
10
11
export function localizeField<T>(
12
  locale: Locales,
13
  model: T,
14
  field: TranslatableKeys<T>,
15
): string | null {
16
  const a = model[field];
17
  return model[field][locale];
18
}
19
export function localizeFieldNonNull<T>(
20
  locale: Locales,
21
  model: T,
22
  field: TranslatableKeysNonNull<T>,
23
): string {
24
  const a = model[field];
25
  return model[field][locale];
26
}
27
28
export function getLocale(locale: string): Locales {
29
  if (locale === "en" || locale === "fr") {
30
    return locale;
31
  }
32
  console.log("Warning: unknown locale. Defaulting to en.");
33
  return "en";
34
}
35